﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FinalFantasy6Randomizer
{
    class AllCharacters
    {
        public List<Character> Characters { get; set; }
        private static readonly AllCharacters instance = new AllCharacters();

        private AllCharacters()
        {
            SetAllCharacters();
        }

        public static AllCharacters GetAllCharacters()
        {
            return instance;
        }

        public void Reset()
        {
            SetAllCharacters();
        }

        private void SetAllCharacters()
        {
            Characters = new List<Character>
                             {
                                 //Terra
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478c0 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce2b },
                                                                    new RomAddress<int> { Address = 0xa5e44 },
                                                                    new RomAddress<int> { Address = 0xa6d4e },
                                                                    new RomAddress<int> { Address = 0xb3b95 },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41de4 }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41e98 }, // Choose a scenario, Kupo!
                                                                    new RomAddress<int> { Address = 0x41f4c }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x42213 }, // Snow Kefka
                                                                    new RomAddress<int> { Address = 0x42603 }, // Snow Kefka
                                                                    //new RomAddress<int> { Address = 0x42613 }, // Snow Kefka
                                                                    new RomAddress<int> { Address = 0x4271a }, // Figaro Castle
                                                                    new RomAddress<int> { Address = 0x42723 },
                                                                    new RomAddress<int> { Address = 0x436e3 }, // Just before Phunbaba 3
                                                                    new RomAddress<int> { Address = 0x4376a }, // Mobliz hideout cave
                                                                    new RomAddress<int> { Address = 0x43773 }, // Mobliz hideout cave
                                                                    new RomAddress<int> { Address = 0x43947 }, // Just before Phunbaba 1
                                                                    new RomAddress<int> { Address = 0x43bb4 }, // If you haven't recruited Terra, her appearance before Kefka 1
                                                                    new RomAddress<int> { Address = 0x43c17 }, // If you haven't recruited Terra, her appearance before Kefka 2
                                                                    new RomAddress<int> { Address = 0x44022 }, // Dressing Gau up
                                                                    new RomAddress<int> { Address = 0x440c4 },
                                                                    new RomAddress<int> { Address = 0x44c31 }, // Terra's flashback at the beginning, outside
                                                                    new RomAddress<int> { Address = 0x44dea }, // Terra's flashback at the beginning with Kefka
                                                                    new RomAddress<int> { Address = 0x456ea }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x4575f }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45a77 }, // Albrook docks
                                                                    new RomAddress<int> { Address = 0x45cd2 }, // Thamasa during Kefka's attack
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18ea60 },
                                                                new RomAddress<int> { Address = 0x18ea64 },
                                                                new RomAddress<int> { Address = 0x18ea69 },
                                                                new RomAddress<int> { Address = 0x18ea6d },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7ca0 },
                                         MP = new RomAddress<int> { Address = 0x2d7ca1 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7ca2 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7ca3 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7ca4 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7ca5 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7ca6 },
                                         Speed = new RomAddress<int> { Address = 0x2d7ca7 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7ca8 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7ca9 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7caa },
                                         Defense = new RomAddress<int> { Address = 0x2d7cab },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7cac },
                                         Evade = new RomAddress<int> { Address = 0x2d7cad },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7cae },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7caf },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7cb0 },
                                         Head = new RomAddress<Item> { Address = 0x2d7cb1 },
                                         Body = new RomAddress<Item> { Address = 0x2d7cb2 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7cb3 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7cb4 },
                                         RunSuccess = new RomAddress<int> { Value = 1, Address = 0x2d7cb5 },
                                     },
                                 //Locke
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478c6 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce2c },
                                                                    new RomAddress<int> { Address = 0xa7dd9 },
                                                                    new RomAddress<int> { Address = 0xa85c6 },
                                                                    new RomAddress<int> { Address = 0xa8612 },
                                                                    new RomAddress<int> { Address = 0xa8681 },
                                                                    new RomAddress<int> { Address = 0xca62b },
                                                                 },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41d8a }, // Shadow's first dream, may or may not be used
                                                                    new RomAddress<int> { Address = 0x41ded }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41e7d }, // Choose a scenario, Kupo!
                                                                    new RomAddress<int> { Address = 0x41f55 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x41fd3 }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x4221c }, // Snow Kefka
                                                                    new RomAddress<int> { Address = 0x4240b }, // Arvis' house
                                                                    new RomAddress<int> { Address = 0x42708 }, // Figaro Castle, after Kefka's first appearance
                                                                    new RomAddress<int> { Address = 0x42855 }, // Figaro Castle, just before the fire
                                                                    new RomAddress<int> { Address = 0x428c1 }, // Figaro Castle library, escorting Terra
                                                                    new RomAddress<int> { Address = 0x42f81 }, // Returner's Hideout
                                                                    new RomAddress<int> { Address = 0x43ccb },
                                                                    new RomAddress<int> { Address = 0x4402b }, // Dressing Gau up
                                                                    new RomAddress<int> { Address = 0x440cd },
                                                                    new RomAddress<int> { Address = 0x445b0 }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x456bd }, // Phoenix Cave
                                                                    new RomAddress<int> { Address = 0x456f3 }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45768 }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45a89 }, // Albrook docks
                                                                    new RomAddress<int> { Address = 0x45cdb }, // Thamasa during Kefka's attack
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18ea72 },
                                                                new RomAddress<int> { Address = 0x18ea76 },
                                                                new RomAddress<int> { Address = 0x18ea7b },
                                                                new RomAddress<int> { Address = 0x18ea7f },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7cb6 },
                                         MP = new RomAddress<int> { Address = 0x2d7cb7 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7cb8 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7cb9 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7cba },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7cbb },
                                         Vigor = new RomAddress<int> { Address = 0x2d7cbc },
                                         Speed = new RomAddress<int> { Address = 0x2d7cbd },
                                         Stamina = new RomAddress<int> { Address = 0x2d7cbe },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7cbf },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7cc0 },
                                         Defense = new RomAddress<int> { Address = 0x2d7cc1 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7cc2 },
                                         Evade = new RomAddress<int> { Address = 0x2d7cc3 },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7cc4 },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7cc5 },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7cc6 },
                                         Head = new RomAddress<Item> { Address = 0x2d7cc7 },
                                         Body = new RomAddress<Item> { Address = 0x2d7cc8 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7cc9 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7cca },
                                         RunSuccess = new RomAddress<int> { Value = 4, Address = 0x2d7ccb },
                                     },
                                 //Cyan
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478cc },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce2d },
                                                                    new RomAddress<int> { Address = 0xb9abc },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41df6 }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41f5e }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x41fdc }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x41fe5 }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x4222e }, // Snow Kefka
                                                                    new RomAddress<int> { Address = 0x4241d }, // Arvis' house
                                                                    new RomAddress<int> { Address = 0x430a1 }, // Imperial Camp
                                                                    new RomAddress<int> { Address = 0x43236 }, // Entering Cyan's Dream
                                                                    new RomAddress<int> { Address = 0x43305 }, // Cyan's Dream, at Wrexsoul
                                                                    new RomAddress<int> { Address = 0x43449 }, // Departing the train
                                                                    new RomAddress<int> { Address = 0x434f4 }, // Departing the train
                                                                    new RomAddress<int> { Address = 0x43b3f }, // Finding Cyan on Mt. Zozo
                                                                    new RomAddress<int> { Address = 0x43b63 }, // Finding Cyan on Mt. Zozo
                                                                    new RomAddress<int> { Address = 0x44034 }, // Dressing up Gau
                                                                    new RomAddress<int> { Address = 0x440d6 }, 
                                                                    new RomAddress<int> { Address = 0x445b9 }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x445e6 }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x4465b }, // Watching the Opera
                                                                    new RomAddress<int> { Address = 0x4474e }, // Watching the Opera?
                                                                    new RomAddress<int> { Address = 0x4482f }, // Watching the Opera
                                                                    new RomAddress<int> { Address = 0x44e29 }, // Vector post-Banquet
                                                                    new RomAddress<int> { Address = 0x45bd6 }, // Cyan at Thamasa
                                                                    //new RomAddress<int> { Address = 0x45bd4 }, // Cyan at Thamasa
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18ea84 },
                                                                new RomAddress<int> { Address = 0x18ea88 },
                                                                new RomAddress<int> { Address = 0x18ea8d },
                                                                new RomAddress<int> { Address = 0x18ea91 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7ccc },
                                         MP = new RomAddress<int> { Address = 0x2d7ccd },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7cce },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7ccf },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7cd0 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7cd1 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7cd2 },
                                         Speed = new RomAddress<int> { Address = 0x2d7cd3 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7cd4 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7cd5 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7cd6 },
                                         Defense = new RomAddress<int> { Address = 0x2d7cd7 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7cd8 },
                                         Evade = new RomAddress<int> { Address = 0x2d7cd9 },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7cda },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7cdb },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7cdc },
                                         Head = new RomAddress<Item> { Address = 0x2d7cdd },
                                         Body = new RomAddress<Item> { Address = 0x2d7cde },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7cdf },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7ce0 },
                                         RunSuccess = new RomAddress<int> { Value = 6, Address = 0x2d7ce1 },
                                     },
                                 //Shadow
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478d2 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce2e },
                                                                    new RomAddress<int> { Address = 0xa7cac },
                                                                    new RomAddress<int> { Address = 0xb0a8f },
                                                                    new RomAddress<int> { Address = 0xbcd5b },
                                                                    new RomAddress<int> { Address = 0xc6fb8 },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41dff }, // Blackjack in general, don't recall this being used
                                                                    new RomAddress<int> { Address = 0x41f67 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x41fee }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x41ff7 }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x42a95 }, // South Figaro, first appearance
                                                                    new RomAddress<int> { Address = 0x42ba3 }, // South Figaro Pub
                                                                    new RomAddress<int> { Address = 0x42fed }, // Old Man's House
                                                                    new RomAddress<int> { Address = 0x43452 }, // Departing the train
                                                                    new RomAddress<int> { Address = 0x434fd }, // Departing the train
                                                                    new RomAddress<int> { Address = 0x43da3 }, // Kohlingen inn
                                                                    new RomAddress<int> { Address = 0x4403d }, // Dressing up Gau
                                                                    new RomAddress<int> { Address = 0x440df },
                                                                    new RomAddress<int> { Address = 0x45a41 }, // Albrook docks
                                                                    new RomAddress<int> { Address = 0x45e4c }, // Thamasa outside
                                                                    new RomAddress<int> { Address = 0x45f51 }, // Thamasa Strago's house
                                                                    new RomAddress<int> { Address = 0x46068 }, // Thamasa burning house
                                                                    new RomAddress<int> { Address = 0x460b9 }, // Cave of the Veldt
                                                                    new RomAddress<int> { Address = 0x466e0 }, // Floating Continent
                                                                    new RomAddress<int> { Address = 0x46a52 }, // Coliseum
                                                                    new RomAddress<int> { Address = 0x456fc }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45771 }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45a53 }, // Albrook docks
                                                                    new RomAddress<int> { Address = 0x45a92 }, // Albrook docks
                                                                    new RomAddress<int> { Address = 0x45fcf }, // Strago's house second floor
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18ea96 },
                                                                new RomAddress<int> { Address = 0x18ea9a },
                                                                new RomAddress<int> { Address = 0x18ea9f },
                                                                new RomAddress<int> { Address = 0x18eaa3 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7ce2 },
                                         MP = new RomAddress<int> { Address = 0x2d7ce3 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7ce4 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7ce5 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7ce6 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7ce7 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7ce8 },
                                         Speed = new RomAddress<int> { Address = 0x2d7ce9 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7cea },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7ceb },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7cec },
                                         Defense = new RomAddress<int> { Address = 0x2d7ced },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7cee },
                                         Evade = new RomAddress<int> { Address = 0x2d7cef },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7cf0 },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7cf1 },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7cf2 },
                                         Head = new RomAddress<Item> { Address = 0x2d7cf3 },
                                         Body = new RomAddress<Item> { Address = 0x2d7cf4 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7cf5 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7cf6 },
                                         RunSuccess = new RomAddress<int> { Value = 0, Address = 0x2d7cf7 },
                                     },
                                 //Edgar
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478d8 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce2f },
                                                                    new RomAddress<int> { Address = 0xa66be },
                                                                    new RomAddress<int> { Address = 0xa6cb0 },
                                                                    new RomAddress<int> { Address = 0xbded7 },
                                                                    new RomAddress<int> { Address = 0xbe4c2 },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41ea1 }, // Choose a scenario, kupo!
                                                                    new RomAddress<int> { Address = 0x41e08 }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41f70 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x42000 }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x42009 }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x42237 }, // Snow Kefka
                                                                    new RomAddress<int> { Address = 0x42426 }, // Arvis' house
                                                                    new RomAddress<int> { Address = 0x42804 }, // Edgar's throne
                                                                    new RomAddress<int> { Address = 0x42f78 }, // Returner's Hideout
                                                                    new RomAddress<int> { Address = 0x44046 }, // Dressing up Gau
                                                                    new RomAddress<int> { Address = 0x440e8 },
                                                                    new RomAddress<int> { Address = 0x445c2 }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x445ef }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x44649 }, // Watching the Opera
                                                                    new RomAddress<int> { Address = 0x4473c }, // watching the Opera?
                                                                    new RomAddress<int> { Address = 0x4481d }, // watching the Opera
                                                                    new RomAddress<int> { Address = 0x44e20 }, // Vector post-Banquet
                                                                    new RomAddress<int> { Address = 0x45705 }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x4577a }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45bdf }, // Edgar at Thamasa
                                                           },
                                         PaletteAltNpcs = new List<RomAddress<int>>
                                                              {
                                                                    new RomAddress<int> { Address = 0x42912 }, // Gerad in Figaro Castle's dungeon
                                                                    new RomAddress<int> { Address = 0x42987 }, // Gerad in Figaro Castle's engine room
                                                                    new RomAddress<int> { Address = 0x42b6d }, // Gerad in South Figaro's Inn
                                                                    new RomAddress<int> { Address = 0x42d26 }, // Gerad in Cave of South Figaro
                                                                    new RomAddress<int> { Address = 0x42d6e }, // Gerad in South Figaro's boat
                                                                    new RomAddress<int> { Address = 0x43a3a }, // Gerad in Nikeah 
                                                                    new RomAddress<int> { Address = 0x43c83 }, // Gerad in Nikeah's docks
                                                              },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eaa8 },
                                                                new RomAddress<int> { Address = 0x18eaac },
                                                                new RomAddress<int> { Address = 0x18eab1 },
                                                                new RomAddress<int> { Address = 0x18eab5 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7cf8 },
                                         MP = new RomAddress<int> { Address = 0x2d7cf9 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7cfa },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7cfb },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7cfc },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7cfd },
                                         Vigor = new RomAddress<int> { Address = 0x2d7cfe },
                                         Speed = new RomAddress<int> { Address = 0x2d7cff },
                                         Stamina = new RomAddress<int> { Address = 0x2d7d00 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7d01 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7d02 },
                                         Defense = new RomAddress<int> { Address = 0x2d7d03 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7d04 },
                                         Evade = new RomAddress<int> { Address = 0x2d7d05 },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7d06 },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7d07 },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7d08 },
                                         Head = new RomAddress<Item> { Address = 0x2d7d09 },
                                         Body = new RomAddress<Item> { Address = 0x2d7d0a },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7d0b },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7d0c },
                                         RunSuccess = new RomAddress<int> { Value = 5, Address = 0x2d7d0d },
                                     },
                                 //Sabin
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478de },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce30 },
                                                                    new RomAddress<int> { Address = 0xa6d2d },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41e86 }, // Choose a scenario, kupo!
                                                                    new RomAddress<int> { Address = 0x41e11 }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41f79 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x42012 }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x42240 }, // Snow Kefka
                                                                    new RomAddress<int> { Address = 0x4242f }, // Arvis' house
                                                                    new RomAddress<int> { Address = 0x427f2 }, // Edgar's room
                                                                    new RomAddress<int> { Address = 0x428ca }, // Matron's flashback, Sabin's introduction
                                                                    new RomAddress<int> { Address = 0x42f1e }, // Returner's Hideout
                                                                    new RomAddress<int> { Address = 0x434eb }, // Departing the train
                                                                    new RomAddress<int> { Address = 0x445cb }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x445f8 }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x44652 }, // Watching the Opera
                                                                    new RomAddress<int> { Address = 0x44745 }, // Watching the Opera?
                                                                    new RomAddress<int> { Address = 0x44826 }, // Watching the Opera
                                                                    new RomAddress<int> { Address = 0x44ecb }, // Vector post-Banquet
                                                                    new RomAddress<int> { Address = 0x45582 }, // Sabin holding up the house
                                                                    new RomAddress<int> { Address = 0x4570e }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45783 }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45bcd }, // Sabin at Thamasa
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eaba },
                                                                new RomAddress<int> { Address = 0x18eabe },
                                                                new RomAddress<int> { Address = 0x18eac3 },
                                                                new RomAddress<int> { Address = 0x18eac7 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7d0e },
                                         MP = new RomAddress<int> { Address = 0x2d7d0f },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7d10 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7d11 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7d12 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7d13 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7d14 },
                                         Speed = new RomAddress<int> { Address = 0x2d7d15 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7d16 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7d17 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7d18 },
                                         Defense = new RomAddress<int> { Address = 0x2d7d19 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7d1a },
                                         Evade = new RomAddress<int> { Address = 0x2d7d1b },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7d1c },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7d1d },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7d1e },
                                         Head = new RomAddress<Item> { Address = 0x2d7d1f },
                                         Body = new RomAddress<Item> { Address = 0x2d7d20 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7d21 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7d22 },
                                         RunSuccess = new RomAddress<int> { Value = 5, Address = 0x2d7d23 },
                                     },
                                 //Celes
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478e4 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce31 },
                                                                    new RomAddress<int> { Address = 0xa870c },
                                                                    new RomAddress<int> { Address = 0xab399 },
                                                                    new RomAddress<int> { Address = 0xabe28 },
                                                                    new RomAddress<int> { Address = 0xac277 },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41e1a }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41f82 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x4201b }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x42225 }, // Snow Kefka
                                                                    new RomAddress<int> { Address = 0x42414 }, // Arvis' house
                                                                    new RomAddress<int> { Address = 0x42c7b }, // Getting beat
                                                                    new RomAddress<int> { Address = 0x42c96 }, // Chained
                                                                    new RomAddress<int> { Address = 0x4404f }, // Dressing up Gau
                                                                    new RomAddress<int> { Address = 0x440f1 },
                                                                    new RomAddress<int> { Address = 0x44115 }, // As a Maria painting in Owzer's house
                                                                    new RomAddress<int> { Address = 0x445d4 }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x4460a }, // Maria watching a duel
                                                                    new RomAddress<int> { Address = 0x446d0 }, // Maria abducted in chains
                                                                    new RomAddress<int> { Address = 0x446fd }, // Maria watching against Ultros?
                                                                    new RomAddress<int> { Address = 0x447c3 }, // Maria abducted in chains?
                                                                    new RomAddress<int> { Address = 0x44841 }, // Rats!
                                                                    new RomAddress<int> { Address = 0x44c28 }, // Terra's flashback at the beginning
                                                                    new RomAddress<int> { Address = 0x45717 }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x4578c }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x458d9 }, // Albrook nighttime scene with Locke
                                                                    new RomAddress<int> { Address = 0x45a38 }, // Alrbook docks
                                                                    new RomAddress<int> { Address = 0x45bb2 }, // Thamasa, Leo's grave
                                                                    new RomAddress<int> { Address = 0x45c66 }, // Thamasa during Kefka's attack
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eacc },
                                                                new RomAddress<int> { Address = 0x18ead0 },
                                                                new RomAddress<int> { Address = 0x18ead5 },
                                                                new RomAddress<int> { Address = 0x18ead9 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7d24 },
                                         MP = new RomAddress<int> { Address = 0x2d7d25 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7d26 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7d27 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7d28 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7d29 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7d2a },
                                         Speed = new RomAddress<int> { Address = 0x2d7d2b },
                                         Stamina = new RomAddress<int> { Address = 0x2d7d2c },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7d2d },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7d2e },
                                         Defense = new RomAddress<int> { Address = 0x2d7d2f },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7d30 },
                                         Evade = new RomAddress<int> { Address = 0x2d7d31 },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7d32 },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7d33 },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7d34 },
                                         Head = new RomAddress<Item> { Address = 0x2d7d35 },
                                         Body = new RomAddress<Item> { Address = 0x2d7d36 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7d37 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7d38 },
                                         RunSuccess = new RomAddress<int> { Value = 1, Address = 0x2d7d39 },
                                     },
                                 //Strago
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478ea },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce32 },
                                                                    new RomAddress<int> { Address = 0xbd9e1 },
                                                                    new RomAddress<int> { Address = 0xbe565 },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41e23 }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41f8b }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x42024 }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x4202d }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x44058 }, // Dressing up Gau
                                                                    new RomAddress<int> { Address = 0x440fa },
                                                                    new RomAddress<int> { Address = 0x45720 }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45795 }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45c1e }, // Thamasa (WoR?)
                                                                    new RomAddress<int> { Address = 0x45ce4 }, // Thamasa
                                                                    new RomAddress<int> { Address = 0x45da1 }, // Thamasa, burning house
                                                                    new RomAddress<int> { Address = 0x45eaf }, // Thamasa, WoR
                                                                    new RomAddress<int> { Address = 0x45ee5 }, // Thamasa Inn
                                                                    new RomAddress<int> { Address = 0x45f1b }, // Strago's house, naming Strago and Relm
                                                                    new RomAddress<int> { Address = 0x45f2d }, // Strago's house (this will be a theme)
                                                                    new RomAddress<int> { Address = 0x45f75 }, // Strago's house
                                                                    new RomAddress<int> { Address = 0x45f90 }, // Strago's house second floor
                                                                    new RomAddress<int> { Address = 0x45f99 }, // Strago's house
                                                                    new RomAddress<int> { Address = 0x45fab }, // Strago's house second floor
                                                                    new RomAddress<int> { Address = 0x45fc6 }, // Strago's house
                                                                    new RomAddress<int> { Address = 0x4620f }, // Fanatics' Tower
                                                                    //new RomAddress<int> { Address = 0x4640f }, // Fanatics' Tower
                                                                    new RomAddress<int> { Address = 0x46890 }, // Hidon's cave
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eade },
                                                                new RomAddress<int> { Address = 0x18eae2 },
                                                                new RomAddress<int> { Address = 0x18eae7 },
                                                                new RomAddress<int> { Address = 0x18eaeb },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7d3a },
                                         MP = new RomAddress<int> { Address = 0x2d7d3b },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7d3c },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7d3d },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7d3e },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7d3f },
                                         Vigor = new RomAddress<int> { Address = 0x2d7d40 },
                                         Speed = new RomAddress<int> { Address = 0x2d7d41 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7d42 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7d43 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7d44 },
                                         Defense = new RomAddress<int> { Address = 0x2d7d45 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7d46 },
                                         Evade = new RomAddress<int> { Address = 0x2d7d47 },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7d48 },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7d49 },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7d4a },
                                         Head = new RomAddress<Item> { Address = 0x2d7d4b },
                                         Body = new RomAddress<Item> { Address = 0x2d7d4c },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7d4d },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7d4e },
                                         RunSuccess = new RomAddress<int> { Value = 6, Address = 0x2d7d4f },
                                     },
                                 //Relm
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478f0 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce33 },
                                                                    new RomAddress<int> { Address = 0xbdaee },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41e2c }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41f94 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x42036 }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x44061 }, // Dressing up Gau
                                                                    new RomAddress<int> { Address = 0x44103 },
                                                                    new RomAddress<int> { Address = 0x44193 }, // Before Chadarnook
                                                                    new RomAddress<int> { Address = 0x45729 }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x4579e }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45c27 }, // Thamasa (WoR?)
                                                                    new RomAddress<int> { Address = 0x45c30 }, // Thamasa
                                                                    new RomAddress<int> { Address = 0x45ced }, // Thamasa
                                                                    new RomAddress<int> { Address = 0x45eb8 }, // Thamasa, WoR
                                                                    new RomAddress<int> { Address = 0x45e5e }, // Thamasa, after burning house?
                                                                    new RomAddress<int> { Address = 0x45f24 }, // Strago's house, naming Strago and Relm
                                                                    new RomAddress<int> { Address = 0x45f36 }, // Strago's house
                                                                    new RomAddress<int> { Address = 0x45f48 }, // Strago's house second floor
                                                                    new RomAddress<int> { Address = 0x45f6c }, // Strago's house
                                                                    new RomAddress<int> { Address = 0x45f87 }, // Strago's house second floor
                                                                    new RomAddress<int> { Address = 0x45fa2 }, // Strago's house
                                                                    new RomAddress<int> { Address = 0x45fb4 }, // Strago's house second floor
                                                                    new RomAddress<int> { Address = 0x45fd8 }, // Strago's house second floor
                                                                    new RomAddress<int> { Address = 0x46056 }, // Burning house
                                                                    new RomAddress<int> { Address = 0x460c2 }, // Cave of the Veldt
                                                                    new RomAddress<int> { Address = 0x4630b }, // Esper Cave statues room
                                                                    new RomAddress<int> { Address = 0x46341 }, // Esper Cave outside
                                                                    new RomAddress<int> { Address = 0x4634a }, // Esper Cave outside
                                                                    new RomAddress<int> { Address = 0x463bf }, // Esper Cave first room
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eaf0 },
                                                                new RomAddress<int> { Address = 0x18eaf4 },
                                                                new RomAddress<int> { Address = 0x18eaf9 },
                                                                new RomAddress<int> { Address = 0x18eafd },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7d50 },
                                         MP = new RomAddress<int> { Address = 0x2d7d51 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7d52 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7d53 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7d54 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7d55 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7d56 },
                                         Speed = new RomAddress<int> { Address = 0x2d7d57 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7d58 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7d59 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7d5a },
                                         Defense = new RomAddress<int> { Address = 0x2d7d5b },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7d5c },
                                         Evade = new RomAddress<int> { Address = 0x2d7d5d },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7d5e },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7d5f },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7d60 },
                                         Head = new RomAddress<Item> { Address = 0x2d7d61 },
                                         Body = new RomAddress<Item> { Address = 0x2d7d62 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7d63 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7d64 },
                                         RunSuccess = new RomAddress<int> { Value = 0, Address = 0x2d7d65 },
                                     },
                                 //Setzer
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478f6 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce34 },
                                                                    new RomAddress<int> { Address = 0xa945f },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41d9c }, // Setzer on Blackjack for explaining first use
                                                                    new RomAddress<int> { Address = 0x41dae }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41e35 }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41e74 }, // Blackjack, Maria's abduction
                                                                    new RomAddress<int> { Address = 0x41f9d }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x4203f }, // Blackjack breaking apart
                                                                    new RomAddress<int> { Address = 0x43dd0 }, // Kohlingen Inn
                                                                    new RomAddress<int> { Address = 0x4406a }, // Dressing up Gau
                                                                    new RomAddress<int> { Address = 0x4410c },
                                                                    new RomAddress<int> { Address = 0x446c7 }, // Setzer nabbing Maria ?
                                                                    new RomAddress<int> { Address = 0x447ba }, // Setzer nabbing Maria ?
                                                                    new RomAddress<int> { Address = 0x44a30 }, // Setzer appearing in Vector
                                                                    new RomAddress<int> { Address = 0x454e0 }, // Setzer's memories of Daryl
                                                                    new RomAddress<int> { Address = 0x454f2 }, // Setzer's memories of Daryl
                                                                    new RomAddress<int> { Address = 0x454fb }, // Setzer's memories of Daryl
                                                                    new RomAddress<int> { Address = 0x45732 }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x457a7 }, // Second Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x45bc4 }, // Setzer at Thamasa
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eb02 },
                                                                new RomAddress<int> { Address = 0x18eb06 },
                                                                new RomAddress<int> { Address = 0x18eb0b },
                                                                new RomAddress<int> { Address = 0x18eb0f },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7d66 },
                                         MP = new RomAddress<int> { Address = 0x2d7d67 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7d68 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7d69 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7d6a },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7d6b },
                                         Vigor = new RomAddress<int> { Address = 0x2d7d6c },
                                         Speed = new RomAddress<int> { Address = 0x2d7d6d },
                                         Stamina = new RomAddress<int> { Address = 0x2d7d6e },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7d6f },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7d70 },
                                         Defense = new RomAddress<int> { Address = 0x2d7d71 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7d72 },
                                         Evade = new RomAddress<int> { Address = 0x2d7d73 },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7d74 },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7d75 },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7d76 },
                                         Head = new RomAddress<Item> { Address = 0x2d7d77 },
                                         Body = new RomAddress<Item> { Address = 0x2d7d78 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7d79 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7d7a },
                                         RunSuccess = new RomAddress<int> { Value = 1, Address = 0x2d7d7b },
                                     },
                                 //Mog
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x478fc },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce35 },
                                                                    new RomAddress<int> { Address = 0xc3a56 },
                                                                    new RomAddress<int> { Address = 0xca94a },
                                                                    new RomAddress<int> { Address = 0xca958 },
                                                                    new RomAddress<int> { Address = 0xca966 },
                                                                    new RomAddress<int> { Address = 0xca974 },
                                                                    new RomAddress<int> { Address = 0xca982 },
                                                                    new RomAddress<int> { Address = 0xca990 },
                                                                    new RomAddress<int> { Address = 0xca99e },
                                                                    new RomAddress<int> { Address = 0xca9ac },
                                                                    new RomAddress<int> { Address = 0xca9ba },
                                                                    new RomAddress<int> { Address = 0xca9c8 },
                                                                    new RomAddress<int> { Address = 0xca9d6 },
                                                                    new RomAddress<int> { Address = 0xcd5ef },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41d93 }, // Mog explains the three party battles
                                                                    new RomAddress<int> { Address = 0x41e3e }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41fa6 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x42345 }, // Gold Hairpin or Mog
                                                                    new RomAddress<int> { Address = 0x42522 }, // Mog's room, WoR
                                                                    new RomAddress<int> { Address = 0x425b2 }, // Moogles bouncing to three party battle
                                                                    new RomAddress<int> { Address = 0x425bb }, // Moogles bouncing to three party battle
                                                                    new RomAddress<int> { Address = 0x4261e }, // Mog's room, WoB
                                                                    new RomAddress<int> { Address = 0x42627 }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x42630 }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x42639 }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x42642 }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x4264b }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x42654 }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x4265d }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x42666 }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x4266f }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x42678 }, // Moogles WoB
                                                                    new RomAddress<int> { Address = 0x44d48 }, // Vector's Pub post-Banquet
                                                                    new RomAddress<int> { Address = 0x4573b }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x457b0 }, // Second Dream Stooge hostage location
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eb14 },
                                                                new RomAddress<int> { Address = 0x18eb18 },
                                                                new RomAddress<int> { Address = 0x18eb1d },
                                                                new RomAddress<int> { Address = 0x18eb21 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7d7c },
                                         MP = new RomAddress<int> { Address = 0x2d7d7d },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7d7e },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7d7f },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7d80 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7d81 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7d82 },
                                         Speed = new RomAddress<int> { Address = 0x2d7d83 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7d84 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7d85 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7d86 },
                                         Defense = new RomAddress<int> { Address = 0x2d7d87 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7d88 },
                                         Evade = new RomAddress<int> { Address = 0x2d7d89 },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7d8a },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7d8b },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7d8c },
                                         Head = new RomAddress<Item> { Address = 0x2d7d8d },
                                         Body = new RomAddress<Item> { Address = 0x2d7d8e },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7d8f },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7d90 },
                                         RunSuccess = new RomAddress<int> { Value = 8, Address = 0x2d7d91 },
                                     },
                                 //Gau
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x47902 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce36 },
                                                                    new RomAddress<int> { Address = 0xbc187 },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41e47 }, // Blackjack in general
                                                                    new RomAddress<int> { Address = 0x41faf }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x42249 }, // Snow Kefka
                                                                    new RomAddress<int> { Address = 0x42438 }, // Arvis' house
                                                                    new RomAddress<int> { Address = 0x4341c }, // Before reuniting with his father
                                                                    new RomAddress<int> { Address = 0x43950 }, // Gau's first appearance
                                                                    new RomAddress<int> { Address = 0x44073 }, // Being dressed up
                                                                    new RomAddress<int> { Address = 0x4407c }, // Being dressed up
                                                                    new RomAddress<int> { Address = 0x445dd }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x44601 }, // Terra's room in Zozo
                                                                    new RomAddress<int> { Address = 0x44664 }, // Watching the Opera
                                                                    new RomAddress<int> { Address = 0x44757 }, // Watching the Opera?
                                                                    new RomAddress<int> { Address = 0x44838 }, // Watching the Opera
                                                                    new RomAddress<int> { Address = 0x44d3f }, // Vector's Pub post-Banquet
                                                                    new RomAddress<int> { Address = 0x45744 }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x457b9 }, // Second Dream Stooge hostage location
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eb26 },
                                                                new RomAddress<int> { Address = 0x18eb2a },
                                                                new RomAddress<int> { Address = 0x18eb2f },
                                                                new RomAddress<int> { Address = 0x18eb33 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7d92 },
                                         MP = new RomAddress<int> { Address = 0x2d7d93 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7d94 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7d95 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7d96 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7d97 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7d98 },
                                         Speed = new RomAddress<int> { Address = 0x2d7d99 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7d9a },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7d9b },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7d9c },
                                         Defense = new RomAddress<int> { Address = 0x2d7d9d },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7d9e },
                                         Evade = new RomAddress<int> { Address = 0x2d7d9f },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7da0 },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7da1 },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7da2 },
                                         Head = new RomAddress<Item> { Address = 0x2d7da3 },
                                         Body = new RomAddress<Item> { Address = 0x2d7da4 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7da5 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7da6 },
                                         RunSuccess = new RomAddress<int> { Value = 4, Address = 0x2d7da7 },
                                     },
                                 //Gogo
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x47908 },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce37 },
                                                                    new RomAddress<int> { Address = 0xb81e4 },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41e50 }, // Blackjack in general, currently not used
                                                                    new RomAddress<int> { Address = 0x41fb8 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x4531e }, // Finding Gogo
                                                                    new RomAddress<int> { Address = 0x4574d }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x457c2 }, // Second Dream Stooge hostage location
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eb38 },
                                                                new RomAddress<int> { Address = 0x18eb3c },
                                                                new RomAddress<int> { Address = 0x18eb41 },
                                                                new RomAddress<int> { Address = 0x18eb45 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7da8 },
                                         MP = new RomAddress<int> { Address = 0x2d7da9 },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7daa },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7dab },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7dac },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7dad },
                                         Vigor = new RomAddress<int> { Address = 0x2d7dae },
                                         Speed = new RomAddress<int> { Address = 0x2d7daf },
                                         Stamina = new RomAddress<int> { Address = 0x2d7db0 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7db1 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7db2 },
                                         Defense = new RomAddress<int> { Address = 0x2d7db3 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7db4 },
                                         Evade = new RomAddress<int> { Address = 0x2d7db5 },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7db6 },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7db7 },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7db8 },
                                         Head = new RomAddress<Item> { Address = 0x2d7db9 },
                                         Body = new RomAddress<Item> { Address = 0x2d7dba },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7dbb },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7dbc },
                                         RunSuccess = new RomAddress<int> { Value = 5, Address = 0x2d7dbd },
                                     },
                                 //Umaro
                                 new Character
                                     {
                                         Name = new RomAddress<string> { Address = 0x4790e },
                                         PaletteOverworld = new List<RomAddress<int>>
                                                                {
                                                                    new RomAddress<int> { Address = 0x2ce38 },
                                                                    new RomAddress<int> { Address = 0xaad5e },
                                                                    new RomAddress<int> { Address = 0xcd7a4 },
                                                                },
                                         PaletteNpcs = new List<RomAddress<int>>
                                                           {
                                                                    new RomAddress<int> { Address = 0x41e59 }, // Blackjack in general, currently not used
                                                                    new RomAddress<int> { Address = 0x41fc1 }, // Falcon in general
                                                                    new RomAddress<int> { Address = 0x42201 }, // Narshe, chasing Lone Wolf
                                                                    new RomAddress<int> { Address = 0x45339 }, // Umaro in his lair
                                                                    new RomAddress<int> { Address = 0x45756 }, // First Dream Stooge hostage location
                                                                    new RomAddress<int> { Address = 0x457cb }, // Second Dream Stooge hostage location
                                                           },
                                         PaletteShops = new List<RomAddress<int>>
                                                            {
                                                                new RomAddress<int> { Address = 0x18eb4a },
                                                                new RomAddress<int> { Address = 0x18eb4e },
                                                                new RomAddress<int> { Address = 0x18eb53 },
                                                                new RomAddress<int> { Address = 0x18eb57 },
                                                            },
                                         HP = new RomAddress<int> { Address = 0x2d7dbe },
                                         MP = new RomAddress<int> { Address = 0x2d7dbf },
                                         Menu1 = new RomAddress<MenuItem> { Address = 0x2d7dc0 },
                                         Menu2 = new RomAddress<MenuItem> { Address = 0x2d7dc1 },
                                         Menu3 = new RomAddress<MenuItem> { Address = 0x2d7dc2 },
                                         Menu4 = new RomAddress<MenuItem> { Address = 0x2d7dc3 },
                                         Vigor = new RomAddress<int> { Address = 0x2d7dc4 },
                                         Speed = new RomAddress<int> { Address = 0x2d7dc5 },
                                         Stamina = new RomAddress<int> { Address = 0x2d7dc6 },
                                         MagicPower = new RomAddress<int> { Address = 0x2d7dc7 },
                                         BattlePower = new RomAddress<int> { Address = 0x2d7dc8 },
                                         Defense = new RomAddress<int> { Address = 0x2d7dc9 },
                                         MagicDefense = new RomAddress<int> { Address = 0x2d7dca },
                                         Evade = new RomAddress<int> { Address = 0x2d7dcb },
                                         MagicBlock = new RomAddress<int> { Address = 0x2d7dcc },
                                         Hand1 = new RomAddress<Item> { Address = 0x2d7dcd },
                                         Hand2 = new RomAddress<Item> { Address = 0x2d7dce },
                                         Head = new RomAddress<Item> { Address = 0x2d7dcf },
                                         Body = new RomAddress<Item> { Address = 0x2d7dd0 },
                                         Relic1 = new RomAddress<Item> { Address = 0x2d7dd1 },
                                         Relic2 = new RomAddress<Item> { Address = 0x2d7dd2 },
                                         RunSuccess = new RomAddress<int> { Value = 2, Address = 0x2d7dd3 },
                                     },
                             };

        }
    }
}
